/**
 * 用户管理js
 */
$(function() {
	load();
	
	//模态框加载列表需要重新设置列表相关信息
	$('#roleModal').on('shown.bs.modal', function () {
		$('#role_table').bootstrapTable('resetView');
    });
});

function cols() {
	return [{
        field: 'state',
        checkbox: true,
        align: 'center',
        width : '20',
        valign: 'middle'
    },{
        field: 'userCode',
        title: '用户名',
        align : 'center'
    }, {
        field: 'username',
        title: '登录名',
        align : 'center'
    }, {
        field: 'locked',
        title: '是否锁定',
        align : 'center',
        width: '100',
        formatter : idToNameFormatter
    },{
    	formatter: operateFormatter,
    	events : operateEvents,
        title: '操作',
        align : 'center',
        width: '200'
    }]
}

function roleCols() {
	return [{
        field: 'state',
        checkbox: true,
        align: 'center',
        width : '30',
        valign: 'middle'
    },{
        field: 'name',
        title: '角色名称',
        align : 'center'
    }]
}

function load() {
	$('#user_table').bootstrapTable({
	    url: '/HomeAcount/user/loadUserList',
	    pagination:true,
	    pageNumber : 1,
	    pageSize : 5,
	    pageList : [5, 10, 20],
	    sidePagination:'server',//设置为服务器端分页
	    queryParams: queryParams,//参数
	    height : 400,
	    idField : "id",
	    columns: cols()
	});
}
/**
 * 查询参数
 * @param params
 * @returns
 */
function queryParams(params) {
	var data = $('#searchForm').serializeJson();
	params = $.mergeJsonObject(data,params);
	return params;
}

function operateFormatter(value, row, index) {
    return [
        '<a class="role" href="javascript:void(0);" title="角色分配">',
        '<i class="glyphicon glyphicon-user"></i>',
        '</a>&nbsp;&nbsp;&nbsp;&nbsp;',
        '<a class="edit" href="javascript:void(0);" title="修改">',
        '<i class="glyphicon glyphicon-pencil"></i>',
        '</a>&nbsp;&nbsp;&nbsp;&nbsp;',
        '<a class="remove" href="javascript:void(0);" title="删除">',
        '<i class="glyphicon glyphicon-remove"></i>',
        '</a>&nbsp;&nbsp;&nbsp;&nbsp;',
        '<a class="view" href="javascript:void(0);" title="查看">',
        '<i class="glyphicon glyphicon-list-alt"></i>',
        '</a>'
    ].join('');
}

function idToNameFormatter(value, row, index) {
	if(value == "1") {
		return "是";
	}else {
		return "否";
	}
}

window.operateEvents = {
    'click .edit': function (e, value, row, index) {
    	$('#opFlag').val('2');//设置操作标志，2表示更新
    	$('#userModalLabel').text('用户修改');
    	$.ajax({
			url : "/HomeAcount/user/loadUser",
			dataType : "json",
			type : "post",
			data : {
				id : row.id
			},
			success : function(data) {
				if(data) {
					$('#userForm').form('load', data);
					$("#password").attr('readonly','readonly');
					$('#userModal').modal({
			    		keyboard: false,
			    		show : true
					});
				}else {
					$(window.parent.alert("操作出错，请联系管理员！"));  
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));  
			}
		});
    },
    'click .remove': function (e, value, row, index) {
    	$.ajax({
			url : "/HomeAcount/user/deleteUser",
			dataType : "json",
			type : "post",
			data : {
				id : row.id
			},
			success : function(data) {
				if(data.flag) {
					$(window.parent.alert("删除成功！"));
					$('#user_table').bootstrapTable('refresh', '');
					$('#user_table').bootstrapTable('remove', {
			            field: 'id',
			            values: row.id
			        });
				}else {
					$(window.parent.alert("删除失败！"));
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));
			}
		});
    },
    'click .view' : function(e, value, row, index) {
    	$('#opFlag').val('0');//设置操作标志，0表示查看
    	$('#userModalLabel').text('用户查看');
    	$.ajax({
			url : "/HomeAcount/user/loadUser",
			dataType : "json",
			type : "post",
			data : {
				id : row.id
			},
			success : function(data) {
				if(data) {
					$('#userForm').form('load', data);
					$('#userForm').find('input[type=text]').each(function(){
						$(this).attr('readonly','readonly');
					});
					$('#userForm').find('input[type=password]').each(function(){
						$(this).attr('readonly','readonly');
					});
					$('#userForm').find('select').each(function(){
						$(this).attr('disabled','disabled');
					});
					$('#formSave').hide();
					$('#userModal').modal({
			    		keyboard: false,
			    		show : true
					});
				}else {
					$(window.parent.alert("操作出错，请联系管理员！"));  
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));  
			}
		});
    },
    'click .role' : function(e, value, row, index) {
    	$('#role_table').bootstrapTable({
    	    url: '/HomeAcount/role/getAllRoles',
    	    height : 200,
    	    idField : "id",
    	    columns: roleCols()
    	});
    	$('#userId').val(row.id);//用户主键
    	$('#roleModal').modal({
    		keyboard: false,
    		show : true
		});
    }
};

function formReset(formId) {
	$('#'+formId).form('reset');
}

function modelColse() {
	$('#userForm').form('reset');
	var flag = $('#opFlag').val();
	if(flag == 0) {
		$('#userForm').find('input[type=text]').each(function(){
			$(this).removeAttr('readonly');
		});
		$('#userForm').find('input[type=password]').each(function(){
			$(this).removeAttr('readonly');
		});
		$('#userForm').find('select').each(function(){
			$(this).removeAttr('disabled');
		});
	}
	$('#formSave').show();
}

function doSearch() {
	var data = $('#searchForm').serializeJson();
	$('#user_table').bootstrapTable('refresh', {query: data});
}

function addUser() {
	$('#opFlag').val('1');//设置操作标志，1表示新增
	$('#userModalLabel').text('用户新增');
	$('#userForm').find('input[type=password]').each(function(){
		$(this).removeAttr('readonly');
	});
	$('#userModal').modal('show');
}

function userSave() {
	var opFlag = $('#opFlag').val();
	var data = $('#userForm').serializeJson();
	if(opFlag == "2") {//修改
		$.ajax({
			url : "/HomeAcount/user/updateUser",
			dataType : "json",
			type : "post",
			data : data,
			success : function(data) {
				if(data.flag) {
					$('#userModal').modal('hide');
					formReset('userForm');
					$(window.parent.alert("更新成功！"));
					$('#user_table').bootstrapTable('refresh', '');
				}else {
					$(window.parent.alert("更新失败！"));
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));
			}
		});
	}
	if(opFlag == "1") {//新增
		$.ajax({
			url : "/HomeAcount/user/addUser",
			dataType : "json",
			type : "post",
			data : data,
			success : function(data) {
				if(data.flag) {
					$('#userModal').modal('hide');
					formReset('userForm');
					$(window.parent.alert("新增成功！"));
					$('#user_table').bootstrapTable('refresh', '');
				}else {
					$(window.parent.alert("新增失败！"));
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));
			}
		});
	}
}
/**
 * 刷新角色列表
 */
function roleTableRefresh() {
	//刷新角色列表
	$('#role_table').bootstrapTable('refresh', '');
}

function getSelectRoles() {
	var userId = $('#userId').val();
	var selectRoles = $('#role_table').bootstrapTable('getSelections');
	if(selectRoles.length > 0 && userId) {
		var ids = "";
		for(var i = 0; i < selectRoles.length; i++) {
			if(i == selectRoles.length - 1) {
				ids += selectRoles[i].id;
			}else {
				ids += selectRoles[i].id + ",";
			}
		}
		$.ajax({
			url : "/HomeAcount/role/roleAllocated",
			dataType : "json",
			type : "post",
			data : {
				userId : userId,
				roleIds : ids
			},
			success : function(data) {
				if(data.flag) {
					roleTableRefresh();
					$('#roleModal').modal('hide');
					$(window.parent.alert("角色分配成功！"));
				}else {
					$(window.parent.alert("角色分配失败！"));
				}
			},
			error : function() {
				$(window.parent.alert("操作出错，请联系管理员！"));
			}
		});
		
	}else {
		$(window.parent.alert("请您勾选角色信息！"));
	}
}